// #ifdef H5
export default {
  name: "Keypress",
  props: {
    disable: {
      type: Boolean,
      default: false,
    },
  },
  mounted() {
    const keyNames = {
      esc: ["Esc", "Escape"],
      tab: "Tab",
      enter: "Enter",
      space: [" ", "Spacebar"],
      up: ["Up", "ArrowUp"],
      left: ["Left", "ArrowLeft"],
      right: ["Right", "ArrowRight"],
      down: ["Down", "ArrowDown"],
      delete: ["Backspace", "Delete", "Del"],
    };
    const listener = ($event) => {
      if (this.disable) {
        return;
      }
      const keyName = Object.keys(keyNames).find((key) => {
        const keyName = $event.key;
        const value = keyNames[key];
        return (
          value === keyName || (Array.isArray(value) && value.includes(keyName))
        );
      });
      if (keyName) {
        // 避免和其他按键事件冲突
        setTimeout(() => {
          this.$emit(keyName, {});
        }, 0);
      }
    };
    document.addEventListener("keyup", listener);
    // this.$once('hook:beforeDestroy', () => {
    //   document.removeEventListener('keyup', listener)
    // })
  },
  render: () => {},
};
// #endif
